package com.erp.gather.service;


import com.erp.gather.domain.bo.ErpCollectProductBo;
import com.erp.gather.domain.vo.ErpCollectProductVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.oldPage.TableDataInfo;
import com.ruoyi.gather.api.domain.ErpCollectProduct;
import com.ruoyi.gather.api.domain.dto.ComputeFreightDto;

import java.util.List;
import java.util.Map;

/**
 * 采集商品;参考AE-商品：发布产品信息（aliexpress.postproduct.redefining.postaeproduct）Service接口
 *
 * @author erp
 * @date 2023-03-07
 */
public interface IErpCollectProductService {

    TableDataInfo<ErpCollectProductVo> queryPageList(ErpCollectProductBo bo, PageQuery pageQuery);

    ErpCollectProductVo queryById(Long id);

    Boolean insertByBo(ErpCollectProductBo bo);

    Boolean staging(ErpCollectProductBo bo);

    Boolean updateByBo(ErpCollectProductBo bo);

    R<String> deleteWithValidByIds(List<Long> asList, boolean b);

    Boolean copyProd(Long productId);

    R<Object> updateStatus(Long productId, Integer productStatus);

    void updateSkuProperty(Long productId);

    R<Object> batchGrounding(String productIds, String type);

    R<Object> soldOutCollectProduct(Long productIds, String type);

    R<Object> batchSoldOutCollectProduct(String productIds, String type);

    void publish(String productId, Long userId, Integer isAI, String roles);

    void publish(Long productId, Long sellerId, Integer isAI, Integer isGenerate, String roles,String taskId);

    void publishAuto(String productIds, String userId, String taskId);

    void selectEditProductUrlToOss();

    void ignoreTranslation(Long productId);

    Boolean checkProductUploadTest(Long collectProductId, Integer type);

    Integer updateUploadTestStatus(Long collectProductId);

    void pushSkuPrice();

    void updateCateGoryPro();

    void updateCateGoryProById(Long proId);

    void updateRepeatSkuCode();

    void addToSellerPro(String prods);

    void updateGroundingPro();

    void updatePersonalGroundingPro();

    void splitPro();

    boolean updateProductImgAndDel(ErpCollectProductBo collectProduct);

    R<Object> generateWhite(String imgUrl);

    R<Object> generateMarketing(String imgUrl);

    R<Object> autoGenerateMarketingOrWhite(String collectProductId);

    void updateCategoryInfo(ErpCollectProduct toBean);

    void updateCustomAttributesByCategory(Long valueOf);

    R<Object> getCollectProductCategoryInfo(Long collectId);

    R<Object> deleteDuplicateProductThree();

    String ImageMerge(String imgUrl, Long userId, Long collectProductId);

    R<Object> getCollectProductInfoById(Long id);

    void setProToOrder(String skuCode);

    String getCategoryEn(Long collectProductId);
    String getCategoryCN(Long collectProductId);

    R<Object> updateSkuPropertyByProductA(ComputeFreightDto dto);

    R<Object> queryProductComputeFreight64();

    R<Object> queryCategoryBySubject(String subject);

}
